package com.example.elinkdemo.util;

import android.content.Context;
import android.text.TextUtils;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

public class PinyinUtil {

    /**
     * 将中文转换为拼音
     *
     * @param chinese 中文文本
     * @return 拼音字符串
     */
    public static String getPinyin(String chinese) {
        if (chinese == null || chinese.isEmpty()) {
            return "";
        }


        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
        // 设置拼音大小写格式，这里设置为小写
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        // 设置拼音声调格式，这里设置为不带声调
//        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
        // 设置 'ü' 的输出格式，这里设置为 'v'
//        format.setVCharType(HanyuPinyinVCharType.WITH_V);
        format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);

        StringBuilder pinyinBuilder = new StringBuilder();
        char[] charArray = chinese.toCharArray();
        for (char c : charArray) {
            // 判断是否为中文字符
            if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
                try {
                    // 获取该中文字符的拼音数组，可能有多个读音，这里只取第一个
                    String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format);
                    if (pinyinArray != null && pinyinArray.length > 0) {
                        pinyinBuilder.append(pinyinArray[0]);
                    }
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            } else {
                // 非中文字符直接添加
                pinyinBuilder.append(c);
            }
        }
        return pinyinBuilder.toString();
    }


//    public static String getPinyin(Context context, String input) {
//        if (TextUtils.isEmpty(input)) {
//            return "";
//        }
//        android.icu.text.HanziToPinyin converter = android.icu.text.HanziToPinyin.getInstance();
//        StringBuilder pinyinBuilder = new StringBuilder();
//        List<android.icu.text.HanziToPinyin.Token> tokens = converter.get(input);
//        if (tokens != null) {
//            for (android.icu.text.HanziToPinyin.Token token : tokens) {
//                if (token.type == android.icu.text.HanziToPinyin.Token.PINYIN) {
//                    pinyinBuilder.append(token.target);
//                } else {
//                    pinyinBuilder.append(token.source);
//                }
//            }
//        }
//        return pinyinBuilder.toString();
//    }

}
